#pragma once

class Interface_SplashScreen_Effect_Rose;
class Interface_SplashScreen_Effect_Cloud;
class Interface_SplashScreen_Effect_Petals;

class Interface_SplashScreen : public Screen
{
	/* Data Struct */
	struct StarData
	{
		float x, y;
		float scale;
		float alpha;
		StarData() : x(0), y(0), scale(1), alpha(255){}
	};	
	/* Image Data */
	SmartPtr <hgeSprite> MoonImg, StarImg;
	SmartPtr <hgeSprite> GlowImg;
	SmartPtr <hgeSprite> SkyImg;
	
	/* Graphics */
	std::deque <StarData> mGraphic_StarData;
	float m_fStellarUpdateTime;

	SmartPtr <Interface_SplashScreen_Effect_Rose>	mRoseBed;
	SmartPtr <Interface_SplashScreen_Effect_Cloud>	mClouds;
	SmartPtr <Interface_SplashScreen_Effect_Petals> mPetals;
public:
	Interface_SplashScreen();
	~Interface_SplashScreen();

	virtual void Activate();
	virtual void Deactivate();

	virtual bool Initailize();
	virtual void Update(const float & Interval);
	virtual void Render();
};

extern SmartPtr <Interface_SplashScreen> g_pInterface_SplashScreen;